package com.openvas.core.gas.until;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import org.springframework.boot.context.properties.ConfigurationProperties;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;

/**
 * 和导出数据相关的工具类
 */
public class FileUtils {

    /**
     *这个方法用于生成一些常用的txt,xml文件
     * @param data  数据
     * @param suffix 文件后缀名
     * @return  文件的绝对路径
     */
    public static  String saveFile(String data,String suffix){

        //将数据从openvas读出写入到哪个文件
        String path="D:\\OpenVas\\report"+(new Date()).getTime()+"."+suffix+"";
        File file=new File(path);
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        BufferedWriter bufferedWriter=null;
        BufferedReader bufferedReader=null;
        try {
            bufferedReader=new BufferedReader(new StringReader(data));
            bufferedWriter=new BufferedWriter(new FileWriter(file));
            char[] chars=new char[1024];
            int len=0;
            while ((len=bufferedReader.read(chars))!=-1){
                bufferedWriter.write(chars,0,len);
            }
            bufferedWriter.flush();
            bufferedReader.close();
            bufferedWriter.close();
            return path;
        } catch (IOException e) {
           e.printStackTrace();
        }
        return saveFile(data, suffix);
    }

    public static void savePDFFile(String data){
        // 1.生成Document对象，此对象用于操作pdf文件
        Document document=new Document();
        String path="D:\\OpenVas\\report"+(new Date()).getTime()+".pdf";
        PdfWriter pdfWriter=null;
        try {
            // 2.建立一个书写器(Writer)与document对象关联，通过书写器(Writer)可以将文档写入到磁盘中。
            // 创建 PdfWriter 对象 第一个参数是对文档对象的引用，第二个参数是文件的实际名称，在该名称中还会给出其输出路径。
            pdfWriter=PdfWriter.getInstance(document,new FileOutputStream(path));
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        pdfWriter.flush();
        pdfWriter.close();

        // 打开文档
        document.open();


        try {
            document.add(new Paragraph(data));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        document.close();
    }
}
